<?php
//声明命名空间
namespace Frame;
//require_once("./Common/safe1.php");
//不可继承的框架初始类
final class Frame{
	public static function run(){
		self::initCharset();		//初始化字符集设置
		self::initConfig();			//初始化配置文件
		self::initRoute();			//初始化路由参数
		self::initConst();			//初始化常量目录设置
		self::initAutoLoad();		//初始化类的自动加载
		self::initDispatch();		//初始化请求分发
	}
	
	//私有的、静态的 初始化字符集设置
	private static function initCharset(){
		header("Content-Type: text/html; charset=UTF-8");
		header("Access-Control-Allow-Origin:*");
	}
	
	//私有的、静态的 初始化配置文件
	private static function initConfig(){
		//配置文件路径：./Admin/Conf/config.php
		$GLOBALS['config'] = require_once(APP_PATH."Conf".DS."config.php");
	}
	
	//私有的、静态的 初始化路由参数
	private static function initRoute(){
		$p = $GLOBALS['config']['default_platform'];		//平台参数
		$c = isset($_GET['c'])?$_GET['c']:$GLOBALS['config']['default_controller'];		//控制器参数
		$a = isset($_GET['a'])?$_GET['a']:$GLOBALS['config']['default_action'];			//动作参数
		define("PLATFORM",$p);
		define("CONTROLLER",$c);
		define("ACTION",$a);
	}
	
	//私有的、静态的 初始化常量目录设置
	private static function initConst(){
		 define("VIEW_PATH",APP_PATH.DS."View".DS.CONTROLLER.DS);
	}
	
	//私有的、静态的 初始化类的自动加载设置
	private static function initAutoLoad(){
		spl_autoload_register(function($className){
			//将空间中的类名，转换为真实的文件路径
			$filename = ROOT_PATH.str_replace("\\",DS,$className).".class.php";
			//判断类文件存在，存在则包含
			if(file_exists($filename)) require_once($filename);
		});
	}
	
	//分发
	private static function initDispatch(){
		//构建控制器类名   \Home\Controller\
		$className = "\\".PLATFORM."\\"."Controller"."\\".CONTROLLER."Controller";
		//创建控制器对象
		$controllerObj = new $className();
		//调用控制器对象的方法
		//常量不能作为方法名
		$actionName = ACTION;
		$controllerObj -> $actionName();  //index()
	}
	
}
?>